attribute vec3 pos;
attribute vec2 texcoord;
attribute vec3 normal;

uniform mat4 M;
uniform mat4 P;
uniform mat4 V;
uniform mat4 NM;

uniform vec3 U_LightPos;
uniform vec4 U_DiffuseLightColor;
uniform vec4 U_DiffuseMaterial;

varying vec4 V_DiffuseColor;

void main()
{
	//L vecotr
	vec3 L = U_LightPos;
	L = normalize(L);
	//N vector
	vec3 n = normalize(mat3(NM) * normal);

	float diffuseIntensity = max(0.0, dot(L, n));
	V_DiffuseColor = U_DiffuseLightColor * U_DiffuseMaterial * diffuseIntensity;
	gl_Position = P * V * M * vec4(pos, 1.0);
}
